/**
 * 基础实体接口
 * @description 所有数据实体的基础接口，包含通用的标识和时间戳字段
 */
export interface IBaseEntity {
  /** 唯一标识符 */
  id: string;
  /** 创建时间戳（毫秒） */
  createdAt: number;
  /** 更新时间戳（毫秒） */
  updatedAt: number;
}

/**
 * 操作结果类型
 * @description 统一的操作结果返回类型
 */
export type OperationResult<T = void> = {
  /** 操作成功 */
  success: true;
  /** 返回数据 */
  data: T;
} | {
  /** 操作失败 */
  success: false;
  /** 错误信息 */
  error: string;
  /** 错误代码 */
  errorCode?: string;
};

/**
 * 异步操作状态
 * @description 用于管理异步操作的加载、错误状态
 */
export interface IAsyncState {
  /** 是否正在加载 */
  loading: boolean;
  /** 错误信息 */
  error: string | null;
  /** 最后更新时间戳 */
  lastUpdated: number | null;
}

/**
 * 筛选状态接口
 * @description 通用的筛选和搜索状态
 */
export interface IFilterState<T = Record<string, unknown>> {
  /** 筛选条件 */
  filters: T;
  /** 搜索关键词 */
  searchKeyword: string;
  /** 排序字段 */
  sortBy: string | null;
  /** 排序方向 */
  sortOrder: 'asc' | 'desc';
}

/**
 * 主题模式类型
 * @description 应用主题模式
 */
export type ThemeMode = 'light' | 'dark' | 'auto';

/**
 * 时间范围接口
 * @description 用于表示时间范围的通用接口
 */
export interface ITimeRange {
  /** 开始时间 */
  startTime: string;
  /** 结束时间 */
  endTime: string;
}

/**
 * 日期范围接口
 * @description 用于表示日期范围的通用接口
 */
export interface IDateRange {
  /** 开始日期 */
  startDate: string;
  /** 结束日期 */
  endDate: string;
}